package com.zjcloud.jwgl.mapper;

import java.util.List;
import com.zjcloud.jwgl.domain.AcAlgorithmType;

/**
 * 算法类型Mapper接口
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public interface AcAlgorithmTypeMapper 
{
    /**
     * 查询算法类型
     * 
     * @param id 算法类型主键
     * @return 算法类型
     */
    public AcAlgorithmType selectAcAlgorithmTypeById(Long id);

    /**
     * 查询算法类型列表
     * 
     * @param acAlgorithmType 算法类型
     * @return 算法类型集合
     */
    public List<AcAlgorithmType> selectAcAlgorithmTypeList(AcAlgorithmType acAlgorithmType);

    /**
     * 新增算法类型
     * 
     * @param acAlgorithmType 算法类型
     * @return 结果
     */
    public int insertAcAlgorithmType(AcAlgorithmType acAlgorithmType);

    /**
     * 修改算法类型
     * 
     * @param acAlgorithmType 算法类型
     * @return 结果
     */
    public int updateAcAlgorithmType(AcAlgorithmType acAlgorithmType);

    /**
     * 删除算法类型
     * 
     * @param id 算法类型主键
     * @return 结果
     */
    public int deleteAcAlgorithmTypeById(Long id);

    /**
     * 批量删除算法类型
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAcAlgorithmTypeByIds(Long[] ids);

    /**
     * 根据类型编码查询算法类型
     * 
     * @param typeCode 类型编码
     * @return 算法类型
     */
    public AcAlgorithmType selectAcAlgorithmTypeByCode(String typeCode);

    /**
     * 查询启用的算法类型列表
     * 
     * @return 算法类型集合
     */
    public List<AcAlgorithmType> selectEnabledAlgorithmTypes();

    /**
     * 查询系统内置算法类型列表
     * 
     * @return 算法类型集合
     */
    public List<AcAlgorithmType> selectSystemAlgorithmTypes();

    /**
     * 根据复杂度等级查询算法类型
     * 
     * @param complexityLevel 复杂度等级
     * @return 算法类型集合
     */
    public List<AcAlgorithmType> selectByComplexityLevel(String complexityLevel);

    /**
     * 根据适用场景查询算法类型
     * 
     * @param scenario 适用场景
     * @return 算法类型集合
     */
    public List<AcAlgorithmType> selectByApplicableScenario(String scenario);
}